#include "fornecedorescontroller.h"
#include "dao/aqfornecedordao.h"
#include "coletascontroller.h"
#include "produtoscontroller.h"

FornecedoresController::FornecedoresController(QObject *parent) :
    QObject(parent)
{
}


QVariantList FornecedoresController::loadDadosFornecedores()
{
    QVariantList dados;

    AQFornecedorDAO dao;
    GenericListModel *list = dao.findAll();

    if(list) {
        QList<QObject *> entries = list->getEntries();
        for(int i=0; i<entries.length(); i++) {
            AQFornecedor *fornecedor = (AQFornecedor *)entries[i];

            ColetasController coletasController;
            TRFORNCOLETA *trFornColeta = coletasController.loadColetaFornecedor(fornecedor->mId());

            if(trFornColeta) {
                QVariantMap map;

                map.insert("id",QString::number(fornecedor->mId()));
                map.insert("nome",fornecedor->Nome());
                map.insert("lat",fornecedor->PosLatitude());
                map.insert("lon",fornecedor->PosLongitude());

                ProdutosController produtosController;
                QVariantList produtos = produtosController.loadDadosProdutos(fornecedor->mId());
                map.insert("qtdProdutos",produtos.size());

                TRCOLETA *trColeta = coletasController.localizaColetaEmAndamento(trFornColeta->mId());
                if(trColeta) {
                    if(trColeta->Finalizada()=="1") {
                        map.insert("color","green");
                        map.insert("status","VISITADO");
                    } else {
                        map.insert("color","yellow");
                        map.insert("status","PARCIAL");
                    }

/*
                    ProdutosController produtosController;
                    QVariantList produtos = produtosController.loadDadosProdutos(fornecedor->mId());

                    bool todosColetados = true;
                    for(int i=0; i<produtos.length(); i++) {
                        QVariantMap produto = produtos.at(i).toMap();
                        if(produto["status"]=="NAO_COLETADO") {
                            todosColetados = false;
                            break;
                        }
                    }

                    if(todosColetados) {
                        map.insert("color","green");
                        map.insert("status","VISITADO");
                    } else {
                        map.insert("color","yellow");
                        map.insert("status","PARCIAL");
                    }
*/
                    delete trColeta;
                } else {
                    map.insert("color","red");
                    map.insert("status","NAO_VISITADO");
                }

                dados.append(map);
                delete trFornColeta;
            }
        }
        delete list;
    }

    return dados;
}
